package com.kaizeli.website.service;

import com.kaizeli.website.pojo.dto.base.PageDTO;
import com.kaizeli.website.pojo.entity.ProjectBasicInfoDO;
import com.kaizeli.website.pojo.vo.ProjectBasicInfoVO;
import com.kaizeli.website.query.ProjectBasicInfoQuery;

import java.util.List;

/**
 * 项目基础信息服务接口
 */
public interface ProjectBasicInfoService {
    
    /**
     * 分页查询项目基础信息列表
     */
    PageDTO<ProjectBasicInfoVO> pageQuery(ProjectBasicInfoQuery query);
    
    /**
     * 根据ID查询项目详情
     */
    ProjectBasicInfoVO getById(Long id);
    
    /**
     * 根据项目编号查询项目
     */
    ProjectBasicInfoVO getByProjectCode(String projectCode);
    
    /**
     * 新增项目
     */
    Long save(ProjectBasicInfoDO projectBasicInfoDO);
    
    /**
     * 更新项目信息
     */
    Boolean update(ProjectBasicInfoDO projectBasicInfoDO);
    
    /**
     * 根据ID删除项目
     */
    Boolean deleteById(Long id);
    
    /**
     * 根据客户ID查询项目列表
     */
    List<ProjectBasicInfoVO> listByCustomerId(Long customerId);
    
    /**
     * 根据签约公司ID查询项目列表
     */
    List<ProjectBasicInfoVO> listByContractCompanyId(Long contractCompanyId);
    
    /**
     * 根据项目状态查询项目列表
     */
    List<ProjectBasicInfoVO> listByStatus(String status);
    
    /**
     * 查询所有项目列表
     */
    List<ProjectBasicInfoVO> listAll();
    
    /**
     * 测试数据库连接
     */
    List<ProjectBasicInfoDO> testDatabase();
    
    /**
     * 作废项目（将状态设置为"作废审批中"，并同步更新关联的验收单和验收成员状态）
     */
    Boolean voidProject(Long id);
}

